﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;
using vudu.Presentacion.Contrato.VU_01_Gestionar_Salones;
using vudu.Logica.Fachada;
using vudu.ClasesDominio;
using System.Text.RegularExpressions;

namespace vudu.Presentacion.Presentador.VU_01_Gestionar_Salones
{
    public class PresentradorModificarSalonDatos
    {

        public IContratoModificarSalonDatos _vista;
        private EnlaceLogico _fachada;
        private String _nombreSalon, _tipoSalon, _edificio;
        private int _capacidadSalon, _status, _idSalon;

        public PresentradorModificarSalonDatos(EnlaceLogico fachada, IContratoModificarSalonDatos vista)
        {
            _vista = vista;
            _fachada = fachada;
           
        }

        public void ModificarSalon()
        {
            
            if (VerificarAgregar())
            {
                Salon miSalon = new Salon(_tipoSalon, _nombreSalon, _edificio, _capacidadSalon, _status, _idSalon);
                
                // cableado hasta agregar la session
                int seModificoStatus = _fachada.ModificarSalon(miSalon, 1);
                if (seModificoStatus == 0)
                {
                    ocurreError("No es posible realizar la transaccion");
                }
                else
                    ocurreExito();
            }
            else
            {
                ocurreError("Los datos presentan errores");
            }

            _vista.TextEdificio.Text = _edificio;
            _vista.TextTipo.Text = _tipoSalon;
            DesabilitarCampos();
        }

        public void DesabilitarCampos()
        {
            
            _vista.TextNombre.Enabled = false;
            _vista.TextCapacidad.Enabled = false;
            _vista.TextEdificio.Enabled = false;
            _vista.TextTipo.Enabled = false;
            _vista.ComboEdificio.Enabled = false;
            _vista.ComboTipoSalon.Enabled = false;
            _vista.ComboStatus.Enabled = false;
            _vista.ComboEdificio.Visible = false;
            _vista.ComboTipoSalon.Visible = false;

        }

        public void LlenarCamposModificar(Salon salon)
        {
            _vista.TextNombre.Text = salon.Nombre;
            _vista.TextTipo.Text = salon.Tipo;
            _vista.TextCapacidad.Text = Convert.ToString(salon.Capacidad);
            _vista.TextEdificio.Text = salon.Edificio;
            _vista.TextID.Text = Convert.ToString(salon.NumeroSalon);

        }

        public void NombreSession(Universidad universidad)
        {
            _vista.usuario.Text = universidad.Nombre;
        }

        public bool VerificarAgregar()
        {

            int agregar = setNombre() * setEdificio() * setTipo() * setCapacidad();
            if (agregar == 1)
                return true;
            else
                return false;
        }



        public int setNombre()
        {
            this._nombreSalon = _vista.TextNombre.Text;
            if ((_nombreSalon.Length == 0) || (_nombreSalon.Length > 50))
            {
                _vista.LNombre.ForeColor = System.Drawing.Color.Red;
                return 0;
            }
            else
                return 1;
        }

        public int setEdificio()
        {

            this._edificio = _vista.ComboEdificio.SelectedItem.Text;

            if (_vista.ComboStatus.SelectedItem.Text == "Inabilitado")
            {
                this._status = 0;
            }
            else
            {
                if (_vista.ComboStatus.SelectedItem.Text == "Habilitado")
                    this._status = 1;
            }

            if (_edificio != "- Selecciona -")
            {
                return 1;
            }
            else
            {
                _vista.LEdificio.ForeColor = System.Drawing.Color.Red;
                return 0;
            }
        }

        public int setTipo()
        {
            this._tipoSalon = _vista.ComboTipoSalon.SelectedItem.Text;
            if (_tipoSalon != "- Selecciona -")
            {
                return 1;
            }
            else
            {
                _vista.LTipo.ForeColor = System.Drawing.Color.Red;
                return 0;
            }
        }

        public int setCapacidad()
        {
            int validacion = 0;
            String capacidadPrueba = _vista.TextCapacidad.Text;
            this._idSalon = Convert.ToInt16(_vista.TextID.Text);

            if (_vista.ComboStatus.SelectedItem.Text == "Inabilitado")
            {
                this._status = 0;
            }
            else
                {
                  if (_vista.ComboStatus.SelectedItem.Text == "Habilitado")
                  {
                      this._status = 1;
                  }
                }
            
            if (capacidadPrueba != "")
            {
                foreach (char car in capacidadPrueba)
                {
                    if (car < '0' || car > '9')
                    {
                        _vista.LCapacidad.ForeColor = System.Drawing.Color.Red;
                        validacion = 0;
                        break;
                    }
                    else
                    {
                        this._capacidadSalon = Int32.Parse(_vista.TextCapacidad.Text);
                        if (this._capacidadSalon > 10 & this._capacidadSalon < 500)
                        {
                            validacion = 1;
                        }
                        else
                        {
                            _vista.LCapacidad.ForeColor = System.Drawing.Color.Red;
                            validacion = 0;
                        }
                    }
                }
            }
            else
            {
                _vista.LCapacidad.ForeColor = System.Drawing.Color.Red;
            }
            return validacion;
        }

        public void ocurreError(String info)
        {
            _vista.Error.Text = "Operación Fallida: " + info;
            _vista.Error.ForeColor = System.Drawing.Color.Red;
            _vista.Error.Visible = true;
        }

        public void ocurreExito()
        {
            _vista.Error.Text = "EL salon fue Modificado con éxito";
            _vista.Error.CssClass = "transaccionExitosa";
            _vista.Error.ForeColor = System.Drawing.Color.Green;
            _vista.Error.Visible = true;

        }
    }


}